﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using middleware.utiles;

namespace middleware.dominio.persistencia
{
    interface IMiddlewarePersistencia
    {
        bool CrearBaseDatosSiNoExiste();

        Usuario ObtenerUsuarioPersistido(string usuario, string contrasena);

        List<BandejaEntrada> ObtenerPersistenciaBandejasEntrada();

        BandejaEntrada PersistirBandejaEntrada(BandejaEntrada aPersisitir);

        List<BandejaSalida> ObtenerPersistenciaBandejasSalida();

        BandejaSalida PersistirBandejaSalida(BandejaSalida aPersisitir);

        BandejaEntrada ObtenerBandejaEntradaPersistida(string nombreBandeja);

        BandejaSalida ObtenerBandejaSalidaPersistida(string nombreBandeja);

        Boolean ModificarBandejaEntradaPersistida(BandejaEntrada bandeja, ITipoBandejaEntrada tipoBandejaEntrada, string nombre, string configuracion);

        Boolean ModificarBandejaSalidaPersistida(BandejaSalida bandeja, ITipoBandejaSalida tipoBandejaSalida, string nombre, string configuracion);

        Boolean ModificarReglaPersistida(Regla regla, string nombreAtributo, string condicion, string valorAtributo, BandejaSalida bandejaSalida);

        Boolean EliminarBandejaEntrada(BandejaEntrada bandeja);

        Boolean EliminarBandejaSalida(BandejaSalida bandejaSalida);

        Boolean EliminarRegla(Regla regla);

        Boolean PersistirHistorico(Historico historico);

        List<Regla> ObtenerPersistenciaReglas();

        Regla PersistirRegla(Regla aPersisitir);

        List<Historico> ObtenerHistoricoPersistido(DateTime fecha, BandejaEntrada bandejaEntrada, string nombreAtributo, string valorAtributo);

        Boolean PersistirLog(Log aPersisitir);

        List<Log> ObtenerLogs(DateTime fecha, string linea);

        ParametroSistema PersistirParametroSistema(ParametroSistema aPersisitir, int tiempo);

        ParametroSistema ObtenerParametroSistema();

        Mensaje PersistirMensaje(Mensaje aPersisitir);

        List<String[]> ObtenerEjecucionConsultaDinamica(string strSelect, string strWhere, string strOrderby);
    }
}
